﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace FrbaBus.UserInterface.ABM.Micro
{
    using FrbaBus.DataRepository;

    public partial class AltaMicro : Form
    {
        ValidacionesGenericas validacionesGenericas;

        MicroRepository microRepository;

        public AltaMicro()
        {
            InitializeComponent();
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            microRepository = new MicroRepository();
            cargarMarcaComboBox();
            validacionesGenericas = new ValidacionesGenericas();
        }

        private void crearButton_Click(object sender, EventArgs e)
        {
            try
            {
                //  Recupero los valores de la GUI.

                string patenteMicro = patenteTextBox.Text;

                string modeloMicro = modeloTextBox.Text;

                int marcaId = Convert.ToInt32(marcaComboBox.SelectedValue);

                int tipoServicioId;

                if (servicioCamaRButton.Checked == true)
                {
                    tipoServicioId = 2;
                }

                else
                {

                    if (servicioSemiCamaRButton.Checked == true)
                    {
                        tipoServicioId = 1;
                    }

                    else
                    {
                            tipoServicioId = 3;   
                    }
                }

              

                int pesoDisponible = Convert.ToInt16(pesoDisponibleTextBox.Text);




                //  Valido los campos obligatorios
                validacionesGenericas.campoObligatorio(patenteMicro, "La patente de micro es obligatorio.");

                //  Guardo en la BD

                  microRepository.guardar(patenteMicro, modeloMicro, marcaId, tipoServicioId, pesoDisponible);

                MessageBox.Show("Se creó el micro correctamente.");
            }
            catch (ValidacionNegocioException excepcionValidacion)
            {
                MessageBox.Show(excepcionValidacion.MensajeAlusuario);
            }
        }

        private void validarCampos(string numero, string patente, string cantidadButacas, string pesoDisponible)
        {
            validacionesGenericas.campoObligatorio(numero, "El número del micro es obligatorio.");
            validacionesGenericas.campoObligatorio(patente, "La patente del micro es obligatoria.");

            validacionesGenericas.campoObligatorio(cantidadButacas, "La cantidad de butacas del micro es obligatoria.");
            if (Convert.ToInt16(cantidadButacas) <= 0)
            {
                throw new ValidacionNegocioException("La cantidad de butacas del micro debe ser mayor a cero.");
            }

            validacionesGenericas.campoObligatorio(pesoDisponible, "El peso disponible para encomiendas del micro es obligatoria.");
            if (Convert.ToInt16(pesoDisponible) <= 0)
            {
                throw new ValidacionNegocioException("El peso disponible para encomiendas del micro debe ser mayor a cero.");
            }
        }

        private void AltaMicro_Load(object sender, EventArgs e)
        {
            fechaAltaLabel.Text = DateTime.Now.ToShortDateString();
            marcaComboBox.Text = "Seleccione...";
        }

        private void cantidadButacasTextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (validacionesGenericas.esLetra(e.KeyChar))
            {
                e.Handled = true;
            }
        }
        
        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            //Restablece los campos a completar
            numeroMicroTextBox.Clear();
            patenteTextBox.Clear();
            cantidadButacasTextBox.Clear();
            modeloTextBox.Clear();
            marcaComboBox.Text = "Seleccione...";
            servicioCamaRButton.Checked = false;
            servicioSemiCamaRButton.Checked = false;
            servicioSuiteRButton.Checked = false;
            pesoDisponibleTextBox.Clear();
        }


        public void cargarMarcaComboBox()
        {
            DataSet dataSet = microRepository.obtenerDataSetParaVincularElementoVista("sp_buscarMarcas");
            marcaComboBox.DataSource = dataSet.Tables[0].DefaultView;
            marcaComboBox.ValueMember = "ID";
            marcaComboBox.DisplayMember = "NOMBRE";
        }

        private void pesoDisponibleTextBox_TextChanged(object sender, EventArgs e)
        {

        }

    }
   
}
